﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using STS.Interfaces;
using STS.Schema.Enums;

namespace STS.Schema.Interfaces
{
    public interface ISqlObject
    {
        int? ParentObjectID { get; }
        int ObjectID { get; }
        string Name { get; }
        SqlObjectType ObjectType { get; }
        ISqlObject Parent { get; }
        IDatabase Database { get; }
        ISchemaFactory Factory { get; }
        IDictionary<string, ISqlObjectProperty> AllProperties { get; }
        ISqlObjectCollection GetChildren<TChild>() where TChild : class, ISqlObject, new();
        void Refresh();
    }
}
